Cloud computing is the use of computing resources (hardware and software) which are available in a remote location and accessible over a network, such as the Internet. Users are able to buy these computing resources (including storage and computing power) as a utility on demand. Cloud computing entrusts remote services with a user's data, software and computation. Use of virtual computing resources can provide a number of advantages including cost advantages and/or ability to adapt rapidly to changing computing resource needs.
In networking, a session is an interactive information interchange between two or more communicating devices (e.g., a server and a client). A session is typically stateful, meaning that at least one of the communicating parts needs to save information about the session history in order to be able to communicate, as opposed to stateless communication, where the communication includes independent requests with responses. Client-side sessions typically use cookies to maintain state without storing data on the server. When presenting a dynamic web page, the server sends the current state data to the client in the form of a cookie. The client saves the cookie and sends it back to the server with a new request. The server uses the data to remember the state of the application for that specific client and generate an appropriate response.
Where server-side state information is maintained, a session token or key can be used, which is a unique identifier that is generated to identify the current interaction session. The client usually stores and sends the token as an HTTP cookie and/or sends it as a parameter in GET or POST queries. The reason to use session keys is that the client only has to handle the identifier while session data is stored on the server.
In a cloud environment, some difficulties exist with the typical session communication. For example, sometimes sessions terminate and need to be reconnected. In such a case, for efficiency it is desirable that the client device reconnect with the same server. The client can be provided a server identifier in a cookie that allows the client to easily pass the cookie back with a request in order to be routed to the same server. However, a server identifier compromises security and allows hackers to identify and map server behavior. Additionally, cloud structures are designed to receive client requests and rout such requests to any of a plurality of servers, not a particular server. Without having a particular server identified, the networking session in a cloud environment can be inefficient, especially as any cached information associated with a particular session can be lost when a session disconnects and reconnects.